package cn.demoncat.util.lang;

import java.util.function.Supplier;

/**
 * 描述：Short工具
 *
 * @author 延晓磊
 *
 * @since 2017年7月10日
 */
public final class ShortUtil {

	/**
	 * 判断为空或0
	 * 
	 * @param o
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2019年1月16日
	 */
	public static boolean isEmpty(Short o) {
		return o == null || o == 0;
	}

	/**
	 * 判断非空或0
	 *
	 * @param o
	 * @return
	 *
	 * @author 延晓磊
	 *
	 * @since 2019年1月16日
	 */
	public static boolean isNotEmpty(Short o) {
		return !isEmpty(o);
	}

	/**
	 * null转0
	 * 
	 * @param o
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年6月5日
	 */
	public static Short toEmpty(Short o) {
		return o == null ? 0 : o;
	}

	/**
	 * null/0 转默认值
	 * 
	 * @param o		数据
	 * @param def	默认值
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2018年6月5日
	 */
	public static Short toDefault(Short o, Short def) {
		return isEmpty(o) ? def : o;
	}

	/**
	 * null/0 转默认值
	 *
	 * @param o		数据
	 * @param def	默认值
	 * @return
	 *
	 * @author 延晓磊
	 *
	 * @since 2018年6月5日
	 */
	public static Short toDefault(Short o, Supplier<Short> def) {
		return isEmpty(o) ? def.get() : o;
	}

	/**
	 * 转换字符串为Short
	 *
	 * @param num
	 * @param def	默认值
	 * @return 如果字符串为空则返回def，如果字符串非数值则异常
	 *
	 * @author 延晓磊
	 *
	 * @since 2017年1月5日
	 */
	public static Short valueOf(String num, Short def) {
		// 如果为空，返回def
		if (StringUtil.isBlank(num)) {
			return def;
		}
		// 非空转换，格式错误抛异常
		return Short.valueOf(num.trim());
	}

	/**
	 * 转换字符串为Short
	 *
	 * @param num
	 * @return 如果字符串为空则返回null，如果字符串非数值则异常
	 *
	 * @author 延晓磊
	 *
	 * @since 2017年1月5日
	 */
	public static Short valueOf(String num) {
		return valueOf(num, null);
	}

	/**
	 * 转换字符串为Short
	 *
	 * @param num
	 * @return 如果字符串为空则返回0，如果字符串非数值则异常
	 *
	 * @author 延晓磊
	 *
	 * @since 2017年1月5日
	 */
	public static Short valueOfZero(String num) {
		return valueOf(num, (short) 0);
	}
 
}
